home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / xalan.jar / org / apache / xalan / xslt / ElemExtensionCall.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-04-12  |  4.8 KB  |  113 lines

  1. package org.apache.xalan.xslt;
  2.  
  3. import java.io.FileNotFoundException;
  4. import java.io.IOException;
  5. import java.net.MalformedURLException;
  6. import org.apache.xalan.xpath.xml.MutableAttrListImpl;
  7. import org.apache.xalan.xpath.xml.QName;
  8. import org.apache.xalan.xpath.xml.XMLParserLiaison;
  9. import org.apache.xalan.xpath.xml.XMLParserLiaisonDefault;
  10. import org.apache.xalan.xpath.xml.XSLMessages;
  11. import org.w3c.dom.Node;
  12. import org.xml.sax.AttributeList;
  13. import org.xml.sax.SAXException;
  14.  
  15. public class ElemExtensionCall extends ElemLiteralResult {
  16.    String m_extns;
  17.    String m_extHandlerLookup;
  18.    String localPart;
  19.    AttributeList m_attrs;
  20.    transient boolean isAvailable = false;
  21.    String m_lang;
  22.    String m_srcURL;
  23.    String m_scriptSrc;
  24.    Class m_javaClass;
  25.  
  26.    public int getXSLToken() {
  27.       return 79;
  28.    }
  29.  
  30.    ElemExtensionCall(XSLTEngineImpl var1, Stylesheet var2, String var3, String var4, String var5, String var6, String var7, String var8, AttributeList var9, int var10, int var11) throws SAXException {
  31.       super(var1, var2, var7, var9, var10, var11);
  32.       this.m_extHandlerLookup = new String("ElemExtensionCall:" + var3);
  33.       this.m_extns = var3;
  34.       this.m_lang = var4;
  35.       this.m_srcURL = var5;
  36.       this.m_scriptSrc = var6;
  37.       if (this.m_lang.equals("javaclass") && this.m_srcURL != null) {
  38.          try {
  39.             String var12 = this.m_srcURL;
  40.             boolean var13 = false;
  41.             if (var12.startsWith("class:")) {
  42.                var12 = var12.substring(6);
  43.                var13 = true;
  44.             }
  45.          } catch (Exception var14) {
  46.             throw new XSLProcessorException(((Throwable)var14).getMessage(), var14);
  47.          }
  48.       }
  49.  
  50.       this.m_attrs = new MutableAttrListImpl(var9);
  51.       this.localPart = var8;
  52.       this.m_attrs = new MutableAttrListImpl(var9);
  53.    }
  54.  
  55.    public boolean elementIsAvailable() {
  56.       return this.isAvailable;
  57.    }
  58.  
  59.    public void execute(XSLTEngineImpl var1, Node var2, Node var3, QName var4) throws XSLProcessorException, MalformedURLException, FileNotFoundException, IOException, SAXException {
  60.       try {
  61.          var1.flushPending();
  62.          XMLParserLiaisonDefault var5 = (XMLParserLiaisonDefault)var1.getXMLProcessorLiaison();
  63.          ExtensionNSHandler var9 = (ExtensionNSHandler)var5.m_extensionFunctionNamespaces.get(this.m_extns);
  64.          if (var9 == null) {
  65.             var9 = new ExtensionNSHandler(var1, this.m_extns);
  66.             var9.setScript(this.m_lang, this.m_srcURL, this.m_scriptSrc);
  67.             var5.addExtensionElementNamespace(this.m_extns, var9);
  68.          }
  69.  
  70.          var9.processElement(this.localPart, this, var1, super.m_stylesheet, var2, var3, var4, this.m_javaClass, this);
  71.       } catch (Exception var8) {
  72.          String var6 = ((Throwable)var8).getMessage();
  73.          if (var6 != null) {
  74.             if (var6.startsWith("Stopping after fatal error:")) {
  75.                var6 = var6.substring("Stopping after fatal error:".length());
  76.             }
  77.  
  78.             var1.message(XSLMessages.createMessage(98, new Object[]{var6}));
  79.          }
  80.  
  81.          this.isAvailable = false;
  82.  
  83.          for(ElemTemplateElement var7 = super.m_firstChild; var7 != null; var7 = var7.m_nextSibling) {
  84.             if (var7.getXSLToken() == 57) {
  85.                var7.execute(var1, var2, var3, var4);
  86.             }
  87.          }
  88.  
  89.       }
  90.    }
  91.  
  92.    public String getAttribute(String var1) {
  93.       String var2 = this.m_attrs.getValue(var1);
  94.       return var2;
  95.    }
  96.  
  97.    public String getAttribute(String var1, Node var2, XSLTEngineImpl var3) throws SAXException {
  98.       if (super.m_avts != null) {
  99.          int var4 = super.m_avts.size();
  100.  
  101.          for(int var5 = var4 - 1; var5 >= 0; --var5) {
  102.             AVT var6 = (AVT)super.m_avts.elementAt(var5);
  103.             if (var6.m_name.equals(var1)) {
  104.                XMLParserLiaison var7 = var3.getXMLProcessorLiaison();
  105.                return var6.evaluate(var7, var2, this, new StringBuffer());
  106.             }
  107.          }
  108.       }
  109.  
  110.       return null;
  111.    }
  112. }
  113.